Questions
16 of 17
1Design a semantic search system that must support 500 million documents with sub-100ms p99 latency. What are the key architectural decisions?
2How would you plan capacity (RAM, disk, CPU, node count) for a collection of a given size, vector dimensionality, and expected QPS?
3What architectural changes would you make to support near-real-time search over data that changes thousands of times per second (e.g., a live feed)?
4How would you design a system that needs to support both 'search the last 24 hours' and 'search all history' with very different latency expectations?
5What role does caching play in a Qdrant-backed search system, and at what layers would you introduce it?
6How would you decide the initial number of shards for a new collection when the eventual data size is uncertain?
7What is the relationship between shard count and query fan-out cost, and why doesn't 'more shards' always mean 'faster'?
8How many replicas would you configure for a shard serving a mission-critical, read-heavy workload, and what does each additional replica cost you?
9What operational steps are involved in adding a new node to an existing Qdrant cluster and rebalancing shards onto it?
10How does Qdrant's architecture and target use case differ from Pinecone's as a fully managed, closed-source vector database?
11When would you choose pgvector inside an existing Postgres database over a dedicated vector database like Qdrant?
12What distinguishes Qdrant from Weaviate and Milvus at a conceptual level, and what would make you choose one over the others for a given project?
13Under what circumstances would a team be justified in NOT using a vector database at all, and instead using brute-force search or a traditional search engine?
14What is your target Recovery Point Objective (RPO) and Recovery Time Objective (RTO) for a Qdrant deployment, and how do snapshot frequency and replication factor influence each?
15How would you design a disaster-recovery strategy that survives the loss of an entire cloud region?
16What is the operational difference between a rolling upgrade of a replicated cluster and an in-place upgrade of a single-node deployment?
17How would you validate that a newly restored cluster from snapshots is actually healthy and serving correct results before routing production traffic to it?
16 / 17

What is the operational difference between a rolling upgrade of a replicated cluster and an in-place upgrade of a single-node deployment?

Rolling upgrades are zero-downtime; single-node upgrades have unavoidable downtime

The fundamental difference is that a replicated cluster has redundancy, so you can upgrade one node at a time while the others continue to serve. A rolling upgrade takes each node out of service, upgrades it, restarts it, and waits for it to rejoin and catch up before moving to the next node. At any moment, the cluster has enough healthy replicas to serve traffic, so the upgrade is transparent to users. A single-node deployment has no redundancy, so upgrading it means stopping the process, upgrading, and restarting - during which the service is unavailable. The downtime is the sum of the stop time, the upgrade time, and the restart and warm-up time. For a single-node deployment, the only way to avoid downtime is to run two nodes (which makes it a cluster) or to use a managed service that handles the upgrade. The rolling upgrade is one of the main operational benefits of running a replicated cluster, and it is why production deployments use replication even when they do not need the read scaling.

The mechanism that makes a rolling upgrade safe is that Qdrant's replication and consensus handle the temporary loss of a node. When a node is taken out, the cluster detects it, promotes a replica if the node was a primary, and continues serving. The node is upgraded and restarted, rejoins the cluster, and catches up on missed writes via WAL replay or a snapshot transfer. The cluster waits for the node to be fully caught up before moving to the next. This is why the upgrade is slower than a single-node upgrade - it is paced by the catch-up time - but it is zero-downtime. The single-node upgrade has no such coordination: the process stops, and there is no replica to serve during the upgrade. The downtime can be reduced by pre-staging the new version and minimizing the restart time, but it cannot be eliminated. The difference in operational risk is significant: a rolling upgrade can be paused or rolled back if a node fails to rejoin, while a single-node upgrade has no fallback if the new version does not start.

  1. 1

    Rolling upgrade: one node at a time, cluster continues serving, zero downtime.

  2. 2

    Single-node upgrade: stop, upgrade, restart; unavoidable downtime.

  3. 3

    Pacing: rolling upgrade is paced by the catch-up time of each node.

  4. 4

    Safety: rolling upgrade can be paused or rolled back; single-node upgrade has no fallback.

  5. 5

    Prerequisite: rolling upgrade requires replication_factor >= 2 and a healthy cluster.

  6. 6

    Risk: a rolling upgrade can fail if a node does not rejoin, but the cluster remains available.

  7. 7

    Pre-staging: pull the new image and prepare the config before the upgrade window.

  8. 8

    Testing: upgrade a staging cluster first to validate the new version.

The trade-off is between cost and availability. A replicated cluster costs more but enables zero-downtime upgrades and better availability. A single-node deployment is cheaper but requires downtime for every upgrade. For a production system, the cost of the extra nodes is usually justified by the availability benefit. The common mistakes are: (1) upgrading a cluster without replication, which turns a rolling upgrade into a downtime event; (2) not testing the new version in staging, so a compatibility issue is discovered in production; (3) not monitoring the catch-up time, so a slow rejoin extends the upgrade window; (4) upgrading during peak traffic, when the loss of a replica's capacity matters; (5) not having a rollback plan if the new version has a problem. Version note: the rolling upgrade procedure and the cluster's behavior during a node restart have evolved across Qdrant releases. Some versions handle the rejoin more gracefully than others. Test the upgrade process on your version in staging.

javascript

Version-dependent: the rolling upgrade procedure and the cluster's behavior during a node restart have changed across Qdrant releases. In some versions, the cluster handles the rejoin more gracefully; in others, the operator must wait for a manual step. Verify the procedure on your version and test it in staging before doing it in production.

Difficulty: 6/10
Topics: Upgrades, High Availability, Operations

Scenario Questions

0-2 years experience
  1. 1

    You need to upgrade Qdrant and you cannot afford downtime. Explain the configuration and the upgrade procedure.

  2. 2

    A teammate runs a single-node deployment in production. Explain the upgrade risk and the recommendation.

2-5 years experience
  1. 1

    You are upgrading a 5-node cluster and one node fails to rejoin. Describe the diagnosis and the remediation.

  2. 2

    You need to upgrade during business hours with minimal impact. Describe the pacing and the monitoring.

5-8 years experience
  1. 1

    Design the upgrade procedure for a multi-region Qdrant deployment, including the staging validation, the rolling upgrade, and the rollback plan.

  2. 2

    You need to upgrade a cluster with zero downtime and a 1-hour rollback window. Describe the automation and the safety checks.

8+ years experience
  1. 1

    Derive the expected upgrade time for a cluster as a function of node count, catch-up time, and pacing. How would you minimize the window?

  2. 2

    You are designing the release process for a Qdrant-based platform that must support continuous deployment. Describe the architecture and the trade-offs.

Follow-up Questions

  • How would you roll back a rolling upgrade if the new version has a problem?
  • What would you monitor during a rolling upgrade to detect that a node is not catching up?